/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pt.iasd.youthshelter.datamodel.service;

import java.util.Date;
import java.util.List;
import pt.iasd.youthshelter.datacore.controller.exceptions.NonexistentEntityException;
import pt.iasd.youthshelter.datamodel.Investiture;

/**
 *
 * @author Rui
 */
public interface InvestitureController {
    
    public static final String FIELD_PLACE = "place";
    public static final String FIELD_EVENT_DATE = "eventDate";

    void create(Investiture investiture);

    void destroy(Integer id) throws NonexistentEntityException;

    void edit(Investiture investiture) throws NonexistentEntityException, Exception;

    Investiture findInvestiture(Integer id);

    List<Investiture> findInvestitureEntities();

    List<Investiture> findInvestitureEntities(int maxResults, int firstResult);
    
    List<Investiture> findCurrentInvestitureEntities();

    List<Investiture> findCurrentInvestitureEntities(int maxResults, int firstResult);
    
    List<Investiture> findDistinctInvestitureEntities();

    List<Investiture> findDistinctInvestitureEntities(int maxResults, int firstResult);

    List<Investiture> findInvestitureEntitiesByPlaceAndDate(String place, Date date);

    List<Investiture> findInvestitureEntitiesByPlaceAndDate(String place, Date date, int maxResults, int firstResult);

    int getInvestitureCount();
    
}
